package com.study.bigdata.spark.core.rdd.operator.action

import org.apache.spark.{SparkConf, SparkContext}

object Spark03_RDD_Oper_Action {
  def main(args: Array[String]): Unit = {
    // 一个应用程序,Driver程序
    val conf = new SparkConf().setMaster("local[*]").setAppName("RDD")
    val sc = new SparkContext(conf)

    // TODO 算子 - 行动
    val rdd = sc.makeRDD(List(1,2,3,4),2)

    // aggregate 和 aggregateByKey的区别
    // 1.数据格式
    // 2.aggregate是一个行动算子，执行后有结果
    //   aggregateByKey是一个转换算子，执行后会产生新的RDD
    // 3.aggregateByKey执行计算时，初始值只会参与分区内计算
    //   aggregate执行计算时，初始值会参与分区内计算，也会参与分区间计算
    val i: Int = rdd.aggregate(5)(_+_,_+_)
    val j: Int = rdd.fold(5)(_+_)
    println(i)//25


    sc.stop()


  }

}
